﻿using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Linq;
using System.Text;
using System.Windows.Forms;
using System.Data.SqlClient;

using iTextSharp;
using iTextSharp.text;
using iTextSharp.text.pdf;
using iTextSharp.text.xml;
using System.IO;

namespace uacars
{
    class PDF
    {
        public void generarPDF(string nombre, SaveFileDialog saveFileDialog1, DataGridView dgv)
        {
            Document pdfDocument = new Document();
            pdfDocument.SetPageSize(PageSize.A4);

            string texto = "";

            Chunk boo = new Chunk("UACARS 2008-2009");
            boo.Font.SetStyle("bold");
            boo.Font.Size = 30;

            if (nombre == "frmCitas")
            {
                saveFileDialog1.FileName = "UACARS citas.pdf";
                Paragraph p2 = new Paragraph("Documento generado de citas");
                saveFileDialog1.Filter = "Archivo pdf|*.pdf";
                saveFileDialog1.ShowDialog();

                if (saveFileDialog1.FileName == "")
                    return;

                PdfWriter.GetInstance(pdfDocument, new FileStream(saveFileDialog1.FileName, FileMode.Create));
                pdfDocument.Open();
                pdfDocument.Add(boo);
                p2.Alignment = 1;
                pdfDocument.Add(p2);
                texto = "Citas Encontrados";
            }
            if (nombre == "frmClientes")
            {
                pdfDocument.SetPageSize(PageSize.A4.Rotate());
                saveFileDialog1.FileName = "UACARS clientes.pdf";
                Paragraph p2 = new Paragraph("Documento generado de clientes");
                saveFileDialog1.Filter = "Archivo pdf|*.pdf";
                saveFileDialog1.ShowDialog();

                if (saveFileDialog1.FileName == "")
                    return;

                PdfWriter.GetInstance(pdfDocument, new FileStream(saveFileDialog1.FileName, FileMode.Create));
                pdfDocument.Open();
                pdfDocument.Add(boo);
                p2.Alignment = 1;
                pdfDocument.Add(p2);
                texto = "Clientes Encontrados";
            }
            if (nombre == "frmEmpleados")
            {
                pdfDocument.SetPageSize(PageSize.A4.Rotate());
                saveFileDialog1.FileName = "UACARS empleados.pdf";
                Paragraph p2 = new Paragraph("Documento generado de empleados");
                saveFileDialog1.Filter = "Archivo pdf|*.pdf";
                saveFileDialog1.ShowDialog();

                if (saveFileDialog1.FileName == "")
                    return;

                PdfWriter.GetInstance(pdfDocument, new FileStream(saveFileDialog1.FileName, FileMode.Create));
                pdfDocument.Open();
                pdfDocument.Add(boo);
                p2.Alignment = 1;
                pdfDocument.Add(p2);
                texto = "Empleados Encontrados";
            }
            if (nombre == "frmOfertas")
            {
                pdfDocument.SetPageSize(PageSize.A4.Rotate());
                saveFileDialog1.FileName = "UACARS ofertas.pdf";
                Paragraph p2 = new Paragraph("Documento generado de ofertas");
                saveFileDialog1.Filter = "Archivo pdf|*.pdf";
                saveFileDialog1.ShowDialog();

                if (saveFileDialog1.FileName == "")
                    return;

                PdfWriter.GetInstance(pdfDocument, new FileStream(saveFileDialog1.FileName, FileMode.Create));
                pdfDocument.Open();
                pdfDocument.Add(boo);
                p2.Alignment = 1;
                pdfDocument.Add(p2);
                texto = "Ofertas Encontradas";
            }
            if (nombre == "frmPedidos")
            {
                pdfDocument.SetPageSize(PageSize.A4.Rotate());
                saveFileDialog1.FileName = "UACARS pedidos.pdf";
                Paragraph p2 = new Paragraph("Documento generado de pedidos");
                saveFileDialog1.Filter = "Archivo pdf|*.pdf";
                saveFileDialog1.ShowDialog();

                if (saveFileDialog1.FileName == "")
                    return;

                PdfWriter.GetInstance(pdfDocument, new FileStream(saveFileDialog1.FileName, FileMode.Create));
                pdfDocument.Open();
                pdfDocument.Add(boo);
                p2.Alignment = 1;
                pdfDocument.Add(p2);
                texto = "Pedidos Encontrados";
            }
            if (nombre == "frmVehiculos")
            {
                pdfDocument.SetPageSize(PageSize.A4.Rotate());
                saveFileDialog1.FileName = "UACARS vehiculos.pdf";
                Paragraph p2 = new Paragraph("Documento generado de vehiculos");
                saveFileDialog1.Filter = "Archivo pdf|*.pdf";
                saveFileDialog1.ShowDialog();

                if (saveFileDialog1.FileName == "")
                    return;

                PdfWriter.GetInstance(pdfDocument, new FileStream(saveFileDialog1.FileName, FileMode.Create));
                pdfDocument.Open();
                pdfDocument.Add(boo);
                p2.Alignment = 1;
                pdfDocument.Add(p2);
                texto = "Vehiculos Encontrados";
            }

            int numFilas = 0;
            int numColumnas = 0;

            numFilas = dgv.Rows.Count;
            numColumnas = dgv.ColumnCount;

            if (numColumnas == 0)
                return;

            PdfPTable table = new PdfPTable(numColumnas);
            table.HorizontalAlignment = 1;
            table.SpacingBefore = 20f;
            table.SpacingAfter = 30f;
            PdfPCell cell = new PdfPCell(new Phrase(texto));

            table.WidthPercentage = 100;
            cell.HorizontalAlignment = 1;
            cell.Colspan = numColumnas;
            cell.Border = 1;
            cell.HorizontalAlignment = 0;

            table.AddCell(cell);
            pdfDocument.Add(cell);

            if (nombre == "frmCitas")
            {
                table.AddCell("ID CITA");
                table.AddCell("FECHA");
                table.AddCell("HORA");
                table.AddCell("CLIENTE");
                table.AddCell("EMPLEADO");
                table.AddCell("MOTIVO");
            }

            if (nombre == "frmClientes")
            {
                table.AddCell("ID CLIENTE");
                table.AddCell("NIF");
                table.AddCell("NOMBRE");
                table.AddCell("APELLIDO1");
                table.AddCell("APELLIDO2");
                table.AddCell("TELEFONO");
                table.AddCell("EMAIL");
                table.AddCell("DIRECCION");
                table.AddCell("LOCALIDAD");
                table.AddCell("PROVINCIA");
                table.AddCell("CP");
                table.AddCell("ALTA");
                table.AddCell("LOGIN");
                table.AddCell("PASS");
            }

            if (nombre == "frmEmpleados")
            {
                table.AddCell("ID");
                table.AddCell("NIF");
                table.AddCell("NOMBRE");
                table.AddCell("APELLIDO1");
                table.AddCell("APELLIDO2");
                table.AddCell("TELEFONO");
                table.AddCell("EMAIL");
                table.AddCell("DIRECCION");
                table.AddCell("LOCALIDAD");
                table.AddCell("PROVINCIA");
                table.AddCell("CP");
                table.AddCell("CARGO");
                table.AddCell("SUELDO");
                table.AddCell("ALTA");
                table.AddCell("LOGIN");
                table.AddCell("PASS");
            }
            if (nombre == "frmOfertas")
            {
                table.AddCell("ID");
                table.AddCell("CLIENTE");
                table.AddCell("VEHICULO");
                table.AddCell("CHOFER");
                table.AddCell("INICIO");
                table.AddCell("FIN");
                table.AddCell("%");
                table.AddCell("Dias GRATIS");
                table.AddCell("DESCRIPCION");
            }
            if (nombre == "frmVehiculos")
            {
                table.AddCell("ID");
                table.AddCell("MARCA");
                table.AddCell("MODELO");
                table.AddCell("MATRICULA");
                table.AddCell("COLOR");
                table.AddCell("PAP");
                table.AddCell("PVP");
                table.AddCell("CATEGORIA");
                table.AddCell("URL");
            }

            if (numFilas > 0)
            {
                for (int i = 0; i < numFilas; i++)
                {
                    if (i % 2 == 1)
                    {
                        table.DefaultCell.GrayFill = 0.6f;
                    }
                    else
                        table.DefaultCell.GrayFill = 0.2f;

                    for (int j = 0; j < numColumnas; j++)
                    {
                        table.AddCell(dgv[j,i].Value.ToString());
                    }
                }
                pdfDocument.Add(table);
            }
            pdfDocument.Close();
        }
    }
}
